from app import create_app, db
from app.models.user import User
from app.models.role import Role
from app.models.menu import Menu

app = create_app()

with app.app_context():
    # 创建角色
    admin_role = Role.query.filter_by(name='admin').first()
    if not admin_role:
        admin_role = Role(name='admin', description='超级管理员')
        db.session.add(admin_role)
        db.session.commit()

    user_role = Role.query.filter_by(name='user').first()
    if not user_role:
        user_role = Role(name='user', description='普通用户')
        db.session.add(user_role)
        db.session.commit()

    # 创建菜单
    # 首页菜单
    index_menu = Menu.query.filter_by(name='首页').first()
    if not index_menu:
        index_menu = Menu(name='首页', url='/admin/', icon='layui-icon-home', order=1)
        db.session.add(index_menu)
        db.session.commit()

    # 用户管理菜单组
    user_manage_menu = Menu.query.filter_by(name='用户管理').first()
    if not user_manage_menu:
        user_manage_menu = Menu(name='用户管理', icon='layui-icon-user', order=2)
        db.session.add(user_manage_menu)
        db.session.commit()

    # 用户列表菜单
    user_list_menu = Menu.query.filter_by(name='用户列表').first()
    if not user_list_menu:
        user_list_menu = Menu(name='用户列表', url='/admin/users', icon='', parent_id=user_manage_menu.id, order=1)
        db.session.add(user_list_menu)
        db.session.commit()

    # 添加用户菜单
    user_add_menu = Menu.query.filter_by(name='添加用户').first()
    if not user_add_menu:
        user_add_menu = Menu(name='添加用户', url='/admin/users/add', icon='', parent_id=user_manage_menu.id, order=2)
        db.session.add(user_add_menu)
        db.session.commit()

    # 角色管理菜单
    role_manage_menu = Menu.query.filter_by(name='角色管理').first()
    if not role_manage_menu:
        role_manage_menu = Menu(name='角色管理', icon='layui-icon-group', order=3)
        db.session.add(role_manage_menu)
        db.session.commit()

    # 角色列表菜单
    role_list_menu = Menu.query.filter_by(name='角色列表').first()
    if not role_list_menu:
        role_list_menu = Menu(name='角色列表', url='/admin/roles', icon='', parent_id=role_manage_menu.id, order=1)
        db.session.add(role_list_menu)
        db.session.commit()

    # 角色菜单权限管理菜单
    role_menus_menu = Menu.query.filter_by(name='角色菜单权限').first()
    if not role_menus_menu:
        role_menus_menu = Menu(name='角色菜单权限', url='/admin/roles/menus', icon='', parent_id=role_manage_menu.id, order=2)
        db.session.add(role_menus_menu)
        db.session.commit()

    # 菜单管理菜单组
    menu_manage_menu = Menu.query.filter_by(name='菜单管理').first()
    if not menu_manage_menu:
        menu_manage_menu = Menu(name='菜单管理', icon='layui-icon-list', order=4)
        db.session.add(menu_manage_menu)
        db.session.commit()

    # 菜单列表菜单
    menu_list_menu = Menu.query.filter_by(name='菜单列表').first()
    if not menu_list_menu:
        menu_list_menu = Menu(name='菜单列表', url='/admin/menus', icon='', parent_id=menu_manage_menu.id, order=1)
        db.session.add(menu_list_menu)
        db.session.commit()

    # 添加菜单菜单
    menu_add_menu = Menu.query.filter_by(name='添加菜单').first()
    if not menu_add_menu:
        menu_add_menu = Menu(name='添加菜单', url='/admin/menus/add', icon='', parent_id=menu_manage_menu.id, order=2)
        db.session.add(menu_add_menu)
        db.session.commit()

    # 为管理员角色分配所有菜单
    admin_role.menus = [index_menu, user_manage_menu, user_list_menu, user_add_menu, role_manage_menu, role_list_menu, role_menus_menu, menu_manage_menu, menu_list_menu, menu_add_menu]
    db.session.commit()

    # 为普通用户角色分配部分菜单
    user_role.menus = [index_menu]
    db.session.commit()

    # 创建超级管理员用户
    admin_user = User.query.filter_by(username='admin').first()
    if not admin_user:
        admin_user = User(username='admin', password='admin123', role_id=admin_role.id)
        db.session.add(admin_user)
        db.session.commit()

    print('初始化数据成功！')
    print('超级管理员账号：admin')
    print('超级管理员密码：admin123')